home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / ant / antenna2 / linscan.bas < prev    next >
BASIC Source File  |  1986-08-12  |  3KB  |  87 lines

  1. 10 CLS
  2. 20 KEY OFF:KEY 10,""
  3. 30 '      MAY 29, 1986
  4. 40    T$="ARRAY FACTOR OF N LINEAR ELEMENTS":LC=1:GOSUB 860
  5. 50 '      AHMAD FAIZAL MOHD ZAIN
  6. 60 '
  7. 70 PRINT: PRINT:PRINT:PRINT
  8. 80 DIM Y(360)
  9. 90 PI=3.141592
  10. 100 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
  11. 110 DEF FN F(PSI)=(SIN(N*PSI/2)/SIN(PSI/2))/N
  12. 120 DEF FN G(PSI)=COS(N*PSI/2)/COS(PSI/2)
  13. 130 INPUT "SCAN ANGLE IN DEGREES";THE0
  14. 140 INPUT "SEPERATION  IN LAMBDA ";D
  15. 150 INPUT "# OF ELEMENTS         ";N
  16. 160 SCREEN 2,0:CLS:KEY OFF
  17. 170 LOCATE 25,1:PRINT"F10=QUIT  <cur up>=increase SCAN  <cur down>=decrease SCAN"
  18. 180 IF THE0>360 THEN THE0=THE0-360 ELSE 200:GOTO 180
  19. 190 IF THE0<-360 THEN THE0=THE0+360 ELSE 200:GOTO 190
  20. 200 TT=PI*THE0/180
  21. 210 ALPR=-2*PI*D*COS(TT)
  22. 220 ALP=ALPR*180/PI
  23. 230 VIEW (126,23)-(516,185),,2
  24. 240 PSI0=ALPR+2*PI*D*COS(0)
  25. 250 YMAX=0
  26. 260 LOCATE 1,10:PRINT USING "NUMBER OF ELEMENTS : ###";N;
  27. 270 LOCATE 1,40:PRINT USING "ELEMENTS SPACING : ##.##";D;:PRINT" LAMBDA"
  28. 280 LOCATE 2, 5:PRINT USING "PROGRESSIVE PHASE SHIFT : ####.##";ALP;:PRINT" DEG"
  29. 290 LOCATE 2,46:PRINT USING "SCAN ANGLE : ####.##";THE0;:PRINT" DEG"
  30. 300 GOSUB 440
  31. 310 A$=INKEY$:IF LEN(A$)<>2 THEN 310
  32. 320 AN=ASC(MID$(A$,2,1))
  33. 330 IF AN=72 THEN THE0=THE0+10:GOTO 390
  34. 340 IF AN=80 THEN THE0=THE0-10:GOTO 390
  35. 350 IF AN=77 THEN THE0=THE0+5:GOTO 390
  36. 360 IF AN=75 THEN THE0=THE0-5:GOTO 390
  37. 370 IF AN=68 THEN GOSUB 800
  38. 380 GOTO 310
  39. 390 LOCATE 1,10:PRINT USING "NUMBER OF ELEMENTS : ###";N;
  40. 400 LOCATE 1,40:PRINT USING "ELEMENTS SPACING : ##.##";D;:PRINT" LAMBDA"
  41. 410 LOCATE 2, 5:PRINT USING "PROGRESSIVE PHASE SHIFT : ####.##";ALP;:PRINT" DEG"
  42. 420 LOCATE 2,46:PRINT USING "SCAN ANGLE : ####.##";THE0;:PRINT" DEG"
  43. 430 GOTO 180
  44. 440 '
  45. 450 LOCATE 13,36:PRINT"PLEASE WAIT"
  46. 460 FOR TH=0 TO 180
  47. 470   X=TH*PI/180
  48. 480   PSI=ALPR+2*PI*D*COS(X)
  49. 490   IF SIN(PSI/2)=0 THEN Y(TH)=1
  50. 500   IF SIN(PSI/2)=0 THEN GOTO 520
  51. 510   Y(TH)=ABS(FN F(PSI))
  52. 520   Y(360-TH)=Y(TH)
  53. 530   IF Y(TH)>YMAX THEN YMAX=Y(TH)
  54. 540 NEXT TH
  55. 550 '
  56. 560 WINDOW (-YMAX,-YMAX)-(YMAX,YMAX)
  57. 570 '
  58. 580 CLS
  59. 590 LOCATE 13,12:PRINT"180"
  60. 600 LOCATE 13,67:PRINT"0"
  61. 610 CIRCLE (0,0),YMAX,1
  62. 620 CIRCLE (0,0),.75*YMAX,1
  63. 630 CIRCLE (0,0),.5*YMAX,1
  64. 640 CIRCLE (0,0),.25*YMAX,1
  65. 650 LINE (-YMAX,0)-(YMAX,0),1
  66. 660 LINE (0,YMAX)-(0,-YMAX),1
  67. 670 LINE (-.707*YMAX,.707*YMAX)-(.707*YMAX,-.707*YMAX),1
  68. 680 LINE (-.707*YMAX,-.707*YMAX)-(.707*YMAX,.707*YMAX),1
  69. 690 '
  70. 700 IF PSI0=0 THEN PSET (YMAX,0) ELSE PSET (FN F(PSI0),0)
  71. 710 FOR TH=0 TO 360
  72. 720   XX=TH*PI/180
  73. 730   X=Y(TH)*COS(XX)
  74. 740   Y=Y(TH)*SIN(XX)
  75. 750   LINE -(X,Y),2
  76. 760 NEXT TH
  77. 770 RETURN
  78. 780 LOCATE 1,1
  79. 790 '
  80. 800 T$="DO YOU WANT TO RUN AGAIN (Y/N)?                               ":LC=25:GOSUB 860
  81. 810 AN$=INKEY$
  82. 820 IF AN$="Y" OR AN$="y" THEN RUN
  83. 830 IF AN$="N" OR AN$="n" THEN END
  84. 840 GOTO 800
  85. 850 :
  86. 860 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$;:RETURN    'SUBROUTINE TO CENTRE TEXT
  87.